HAL GENERIC constants migration

This section provides information about the HAL GENERIC constants migration.

HAL GENERIC constants migration

Device revision ID

Note

These defines are used internally and do not impact user-level operations.

HAL1

HAL2

Example

#define REV_ID_A
#define REV_ID_B
#define REV_ID_V
#define REV_ID_X
#define REV_ID_Y
#define REV_ID_Z
Removed; use instead:
#define LL_DBGMCU_REV_ID_A
#define LL_DBGMCU_REV_ID_B
#define LL_DBGMCU_REV_ID_V
#define LL_DBGMCU_REV_ID_X
#define LL_DBGMCU_REV_ID_Y
#define LL_DBGMCU_REV_ID_Z

HAL SYSCFG/SBS constants migration

Floating Point Unit Interrupts

In HAL2, the FPU interrupts are updated with the HAL_ prefix.

HAL1

HAL2

Example SBS

#define SBS_IT_FPU_IOC
#define SBS_IT_FPU_DZC
#define SBS_IT_FPU_UFC
#define SBS_IT_FPU_OFC
#define SBS_IT_FPU_IDC
#define SBS_IT_FPU_IXC
#define HAL_SBS_IT_FPU_IOC
#define HAL_SBS_IT_FPU_DZC
#define HAL_SBS_IT_FPU_UFC
#define HAL_SBS_IT_FPU_OFC
#define HAL_SBS_IT_FPU_IDC
#define HAL_SBS_IT_FPU_IXC

Example SYSCFG

#define SYSCFG_IT_FPU_IOC
#define SYSCFG_IT_FPU_DZC
#define SYSCFG_IT_FPU_UFC
#define SYSCFG_IT_FPU_OFC
#define SYSCFG_IT_FPU_IDC
#define SYSCFG_IT_FPU_IXC
#define HAL_SYSCFG_IT_FPU_IOC
#define HAL_SYSCFG_IT_FPU_DZC
#define HAL_SYSCFG_IT_FPU_UFC
#define HAL_SYSCFG_IT_FPU_OFC
#define HAL_SYSCFG_IT_FPU_IDC
#define HAL_SYSCFG_IT_FPU_IXC

Related concepts: Add HAL_PPP Prefix to All HAL Peripheral APIs (Defines, Macros, Types, and Functions).


TIM break inputs

In HAL2, the TIM break inputs are updated with the HAL_ prefix.

HAL1

HAL2

Example SBS

#define SBS_BREAK_FLASH_ECC
#define SBS_BREAK_PVD
#define SBS_BREAK_SRAM_ECC
#define SBS_BREAK_LOCKUP
#define HAL_SBS_FLASH_ECC_DOUBLE_ERROR
#define HAL_SBS_PVD
#define HAL_SBS_SRAM_ECC_DOUBLE_ERROR
#define HAL_SBS_LOCKUP_OUT
#define HAL_SBS_TIM_BREAK_INPUTS_ALL

Example SYSCFG

#define SYSCFG_BREAK_FLASH_ECC
#define SYSCFG_BREAK_PVD
#define SYSCFG_BREAK_SRAM_ECC
#define SYSCFG_BREAK_LOCKUP
#define HAL_SYSCFG_FLASH_ECC_DOUBLE_ERROR
#define HAL_SYSCFG_PVD
#define HAL_SYSCFG_SRAM_ECC_DOUBLE_ERROR
#define HAL_SYSCFG_LOCKUP_OUT
#define HAL_SYSCFG_TIM_BREAK_INPUTS_ALL

Related concepts: Add HAL_PPP Prefix to All HAL Peripheral APIs (Defines, Macros, Types, and Functions).


Fast mode plus driving capability

In HAL2, the naming has been updated with the HAL_ prefix and more descriptive names.

HAL1

HAL2

Example SBS

#define SBS_FASTMODEPLUS_PB6
#define SBS_FASTMODEPLUS_PB7
#define SBS_FASTMODEPLUS_PB8
#define SBS_FASTMODEPLUS_PB9
              .
              .
              .
#define HAL_SBS_DRIVE_PB6
#define HAL_SBS_DRIVE_PB7
#define HAL_SBS_DRIVE_PB8
#define HAL_SBS_DRIVE_PB9
              .
              .
              .

Example SYSCFG

#define SYSCFG_FASTMODEPLUS_PB6
#define SYSCFG_FASTMODEPLUS_PB7
#define SYSCFG_FASTMODEPLUS_PB8
#define SYSCFG_FASTMODEPLUS_PB9
              .
              .
              .
#define HAL_SYSCFG_DRIVE_PB6
#define HAL_SYSCFG_DRIVE_PB7
#define HAL_SYSCFG_DRIVE_PB8
#define HAL_SYSCFG_DRIVE_PB9
              .
              .
              .

Related concepts: Add HAL_PPP Prefix to All HAL Peripheral APIs (Defines, Macros, Types, and Functions).


SYSCFG get flag

HAL1

HAL2

Example

#define SYSCFG_FLAG_SRAM2_PE
#define SYSCFG_FLAG_SRAM2_BUSY
#define SYSCFG_FLAG_SRAM_PE
#define SYSCFG_FLAG_CCMSRAM_BUSY
                 .
                 .
                 .

In HAL1, these defines are used by the macro __HAL_SYSCFG_GET_FLAG() to retrieve the flag status.

In HAL2, the HAL flag defines and macros have been removed.

Instead, use HAL_SYSCFG_IsActiveFlag() with the appropriate parameters.

For more details, refer to Flags management.

Note

The availability and behavior of these flags may vary between different STM32 series.


Memories erase flags status

HAL1

HAL2

Example SBS

#define SBS_MEMORIES_ERASE_FLAG_MCLR
#define SBS_MEMORIES_ERASE_FLAG_IPMEE

In HAL1, these defines are used by the macros __HAL_SBS_GET_MEMORIES_ERASE_STATUS()

or __HAL_SBS_CLEAR_MEMORIES_ERASE_STATUS() to manage the status of memory erase flags.

In HAL2, the HAL flag defines and macros have been removed.

Instead, use the static inline functions declared in the LL layer to manage memory erase status.

For more details, refer to Check and clear SBS memories erase status flags.

Note

The availability and behavior of these flags may vary between different STM32 series.


Pin remapping

In HAL2, remapping of pins uses a more structured naming convention.

HAL1

HAL2

Example

#define SYSCFG_REMAP_PA11
#define SYSCFG_REMAP_PA12
#define HAL_SYSCFG_REMAP_PA9_TO_PA11
#define HAL_SYSCFG_REMAP_PA10_TO_PA12
#define HAL_SYSCFG_REMAP_ALL_IO

Related concepts: Add HAL_PPP Prefix to All HAL Peripheral APIs (Defines, Macros, Types, and Functions).


Ethernet interface selection

HAL1

HAL2

Example SBS



#define SBS_ETH_MII
#define SBS_ETH_RMII
typedef enum
{
  HAL_SBS_ETH_PHY_INT_GMII_MII,
  HAL_SBS_ETH_PHY_INT_RMII,
} hal_sbs_eth_interface_t;

Example SYSCFG



#define SYSCFG_ETH_MII
#define SYSCFG_ETH_RMII
typedef enum
{
  HAL_SYSCFG_ETH_PHY_INT_GMII_MII,
  HAL_SYSCFG_ETH_PHY_INT_RMII,
} hal_syscfg_eth_interface_t;

Related concepts: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


Next HDPL selection

HAL1

HAL2

Example



#define SBS_OBKHDPL_INCR_0
#define SBS_OBKHDPL_INCR_1
#define SBS_OBKHDPL_INCR_2
#define SBS_OBKHDPL_INCR_3
typedef enum
{
  HAL_SBS_HDP_OBK_LEVEL_0,
  HAL_SBS_HDP_OBK_LEVEL_1,
  HAL_SBS_HDP_OBK_LEVEL_2,
  HAL_SBS_HDP_OBK_LEVEL_3,
} hal_sbs_hdp_obk_level_value_t

Related concepts: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


HDPL value selection

HAL1

HAL2

Example



#define SBS_HDPL_VALUE_0
#define SBS_HDPL_VALUE_1
#define SBS_HDPL_VALUE_2
#define SBS_HDPL_VALUE_3
typedef enum
{
  HAL_SBS_HDP_LEVEL_0,
  HAL_SBS_HDP_LEVEL_1,
  HAL_SBS_HDP_LEVEL_2,
  HAL_SBS_HDP_LEVEL_3,
} hal_sbs_hdp_level_value_t

Related concepts: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


Configuring the OTG_HS PHY

OTG HS PHY reference clock frequency selection

HAL1

HAL2

Example



#define SYSCFG_OTG_HS_PHY_CLK_SELECT_1
#define SYSCFG_OTG_HS_PHY_CLK_SELECT_2
#define SYSCFG_OTG_HS_PHY_CLK_SELECT_3
#define SYSCFG_OTG_HS_PHY_CLK_SELECT_4
#define SYSCFG_OTG_HS_PHY_CLK_SELECT_5
#define SYSCFG_OTG_HS_PHY_CLK_SELECT_6
typedef enum
{
  HAL_SYSCFG_USBHSPHY_16MHZ,
  HAL_SYSCFG_USBHSPHY_19_2MHZ,
  HAL_SYSCFG_USBHSPHY_20MHZ,
  HAL_SYSCFG_USBHSPHY_24MHZ,
  HAL_SYSCFG_USBHSPHY_26MHZ,
  HAL_SYSCFG_USBHSPHY_32MHZ
} hal_syscfg_usbhsphy_frequency_t;

Related concepts: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


Memory address remap

HAL1

HAL2

Example



#define SYSCFG_BOOT_MAINFLASH
#define SYSCFG_BOOT_SYSTEMFLASH
#define SYSCFG_BOOT_SRAM
typedef enum
{
  HAL_SYSCFG_MEMORY_ADDR_REMAP_MAINFLASH,
  HAL_SYSCFG_MEMORY_ADDR_REMAP_SYSTEMFLASH,
  HAL_SYSCFG_MEMORY_ADDR_REMAP_SRAM
} hal_syscfg_memory_addr_remap_t

Related concepts: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


IR Modulation envelope source

HAL1

HAL2

Example



#define HAL_SYSCFG_IRDA_ENV_SEL_TIM16
#define HAL_SYSCFG_IRDA_ENV_SEL_USART1
#define HAL_SYSCFG_IRDA_ENV_SEL_USART2
typedef enum
{
  HAL_SYSCFG_IR_MOD_ENVLP_TIM16,
  HAL_SYSCFG_IR_MOD_ENVLP_USART1,
  HAL_SYSCFG_IR_MOD_ENVLP_USART2
} hal_syscfg_ir_mod_envelope_src_t

Related concepts: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


IR Modulation output polarity

HAL1

HAL2

Example



#define HAL_SYSCFG_IRDA_POLARITY_NOT_INVERTED
#define HAL_SYSCFG_IRDA_POLARITY_INVERTED
typedef enum
{
  HAL_SYSCFG_IR_MOD_OUT_NOT_INVERTED,
  HAL_SYSCFG_IR_MOD_OUT_INVERTED
} hal_syscfg_ir_mod_out_polarity_t

Related concepts: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


Interrupt line configuration

HAL1

HAL2

Example



#define HAL_ITLINE_WWDG
#define HAL_ITLINE_RTC
#define HAL_ITLINE_FLASH_ITF
#define HAL_ITLINE_CLK_CTRL
#define HAL_ITLINE_EXTI0
#define HAL_ITLINE_EXTI1
#define HAL_ITLINE_EXTI2
#define HAL_ITLINE_EXTI3
             .
             .
             .
typedef enum
{
  HAL_SYSCFG_IT_REQUEST_WWDG,
  HAL_SYSCFG_IT_REQUEST_RTC,
  HAL_SYSCFG_IT_REQUEST_FLASH,
  HAL_SYSCFG_IT_REQUEST_RCC,
  HAL_SYSCFG_IT_REQUEST_EXTI0,
  HAL_SYSCFG_IT_REQUEST_EXTI1,
  HAL_SYSCFG_IT_REQUEST_EXTI2,
  HAL_SYSCFG_IT_REQUEST_EXTI3
                  .
                  .
                  .
} hal_syscfg_it_request_source_t

Related concepts: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


HAL source pin binding

HAL1

HAL2

Example



#define HAL_BIND_SO8_PIN1_PB7
#define HAL_BIND_SO8_PIN1_PC14
#define HAL_BIND_SO8_PIN4_PF2
#define HAL_BIND_SO8_PIN4_PA0
#define HAL_BIND_SO8_PIN4_PA1
                .
                .
                .
typedef enum
{
  HAL_SYSCFG_BIND_SO8_PIN1_TO_PB7,
  HAL_SYSCFG_BIND_SO8_PIN1_TO_PC14,
  HAL_SYSCFG_BIND_SO8_PIN4_TO_PF2,
  HAL_SYSCFG_BIND_SO8_PIN4_TO_PA0,
  HAL_SYSCFG_BIND_SO8_PIN4_TO_PA1,
              .
              .
              .
} hal_syscfg_bind_package_pin_src_t;

Related concepts: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


Package pin binding

HAL1

HAL2

Example



#define HAL_BIND_SO8_PIN1
#define HAL_BIND_SO8_PIN4
#define HAL_BIND_SO8_PIN5
#define HAL_BIND_SO8_PIN8
#define HAL_BIND_WLCSP12_PINE2
#define HAL_BIND_WLCSP12_PINF1
typedef enum
{
  HAL_SYSCFG_BIND_SO8_PIN1,
  HAL_SYSCFG_BIND_SO8_PIN4,
  HAL_SYSCFG_BIND_SO8_PIN5,
  HAL_SYSCFG_BIND_SO8_PIN8,
  HAL_SYSCFG_BIND_WLCSP12_PINE2,
  HAL_SYSCFG_BIND_WLCSP12_PINF1
} hal_syscfg_bind_package_pin_t;

Related concepts: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


HAL pin binding

HAL1

HAL2

Example

#define HAL_BIND_WLCSP14_PINF2_PA1
#define HAL_BIND_WLCSP14_PINF2_PA2
#define HAL_BIND_WLCSP14_PING3_PF2
#define HAL_BIND_WLCSP14_PING3_PA0
#define HAL_BIND_WLCSP14_PINJ1_PA8
#define HAL_BIND_WLCSP14_PINJ1_PA11
#define HAL_BIND_WLCSP14_PINH2_PA5
#define HAL_BIND_WLCSP14_PINH2_PA6
#define HAL_BIND_WLCSP14_PING1_PA7
#define HAL_BIND_WLCSP14_PING1_PA12
#define HAL_BIND_WLCSP14_PINJ3_PA3
#define HAL_BIND_WLCSP14_PINJ3_PA4
#define HAL_BIND_WLCSP14_PINF2
#define HAL_BIND_WLCSP14_PING3
#define HAL_BIND_WLCSP14_PINJ1
#define HAL_BIND_WLCSP14_PINH2
#define HAL_BIND_WLCSP14_PING1
#define HAL_BIND_WLCSP14_PINJ3

Not aligned with the product spec. Removed in HAL2.


HSPI capacitance

HAL1

HAL2

Example



#define SYSCFG_HSPI_CAPACITANCE_OFF
#define SYSCFG_HSPI_CAPACITANCE_1_DIV_3
#define SYSCFG_HSPI_CAPACITANCE_2_DIV_3
#define SYSCFG_HSPI_CAPACITANCE_FULL
typedef enum
{
  HAL_SYSCFG_CAPACITANCE_OFF,
  HAL_SYSCFG_CAPACITANCE_1_DIV_3,
  HAL_SYSCFG_CAPACITANCE_2_DIV_3,
  HAL_SYSCFG_CAPACITANCE_FULL
} hal_syscfg_capacitance_t;

Related concepts: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


Transmitter pre-emphasis current

HAL1

HAL2

Example



#define SYSCFG_OTG_HS_PHY_PREEMP_DISABLED
#define SYSCFG_OTG_HS_PHY_PREEMP_1X
#define SYSCFG_OTG_HS_PHY_PREEMP_2X
#define SYSCFG_OTG_HS_PHY_PREEMP_3X
typedef enum
{
  HAL_SYSCFG_SRC_CURRENT_NO,
  HAL_SYSCFG_SRC_CURRENT_1,
  HAL_SYSCFG_SRC_CURRENT_2,
  HAL_SYSCFG_SRC_CURRENT_3
} hal_syscfg_src_current_t;

Related concepts: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


Disconnect threshold adjustment

HAL1

HAL2

Example



#define SYSCFG_OTG_HS_PHY_DISCONNECT_0PERCENT
#define SYSCFG_OTG_HS_PHY_DISCONNECT_5_9PERCENT
typedef enum
{
  HAL_SYSCFG_DIS_ADJUST_0_PERCENT,
  HAL_SYSCFG_DIS_ADJUST_PLUS_5_9_PERCENT
} hal_syscfg_disconnect_adjustment_t;

Related concepts: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


Squelch threshold adjustment

HAL1

HAL2

Example



#define SYSCFG_OTG_HS_PHY_SQUELCH_15PERCENT
#define SYSCFG_OTG_HS_PHY_SQUELCH_0PERCENT
typedef enum
 {
   HAL_SYSCFG_SQUELCH_ADJUST_0_PERCENT,
   HAL_SYSCFG_SQUELCH_ADJUST_PLUS_15_PERCENT
 } hal_syscfg_squelch_adjust_t;

Related concepts: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


Interrupt line mapping

Note

These defines are used internally and do not impact user-level operations.

HAL1

HAL2

Example

#define HAL_SYSCFG_ITLINE0
#define HAL_SYSCFG_ITLINE2
#define HAL_SYSCFG_ITLINE3
#define HAL_SYSCFG_ITLINE4
               .
               .
               .
#define LL_SYSCFG_ITLINE0
#define LL_SYSCFG_ITLINE2
#define LL_SYSCFG_ITLINE3
#define LL_SYSCFG_ITLINE4
               .
               .
               .

IO Compensation cell configuration

HAL1

HAL2

Description

In HAL1, the IO compensation cell configuration was managed using macros.

In HAL2, this functionality has been updated to use different macros for default and custom configurations, and it is managed in LL.

Example

#define SBS_VDD_CELL_CODE
#define SBS_VDD_REGISTER_CODE
#define LL_SBS_CCELL_VDDIO_DEFAULT_CODE
#define LL_SBS_CCELL_VDDIO_CUSTOM_CODE

Related concepts: Add HAL_PPP Prefix to All HAL Peripheral APIs (Defines, Macros, Types, and Functions).


OTG HS PHY power down configuration

HAL1

HAL2

Example




#define SYSCFG_OTG_HS_PHY_POWER_ON
#define SYSCFG_OTG_HS_PHY_POWER_DOWN

In HAL2, the OTG_HS PHY Power Down defines have been removed. Instead, use the following functions to manage the OTG_HS PHY Power Down.

HAL_SYSCFG_EnableUSBHSPHYPowerDown()
HAL_SYSCFG_DisableUSBHSPHYPowerDown()

OTG_HS PHY Enable

HAL1

HAL2

Example




#define SYSCFG_OTG_HS_PHY_ENABLE
#define SYSCFG_OTG_HS_PHY_UNDERRESET

In HAL2, the OTG_HS PHY Enable defines have been removed. Instead, use the following functions to manage the OTG_HS PHY

HAL_SYSCFG_EnableUSBHSPHY()
HAL_SYSCFG_DisableUSBHSPHY()

HAL VREFBUF constants migration

Voltage scaling

HAL1

HAL2

Example



#define SYSCFG_VREFBUF_VOLTAGE_SCALE0
#define SYSCFG_VREFBUF_VOLTAGE_SCALE1
#define SYSCFG_VREFBUF_VOLTAGE_SCALE2
#define SYSCFG_VREFBUF_VOLTAGE_SCALE3
typedef enum
{
    HAL_VREFBUF_VOLTAGE_1_5V,
    HAL_VREFBUF_VOLTAGE_1_8V,
    HAL_VREFBUF_VOLTAGE_2_048V,
    HAL_VREFBUF_VOLTAGE_2_5V
} hal_vrefbuf_voltage_scale_t;

Related concepts: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


VREFBUF Mode

HAL1

HAL2

Example




#define SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE
#define SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE
typedef enum
{
    HAL_VREFBUF_MODE_PULL_DOWN,
    HAL_VREFBUF_MODE_EXT_VOLTAGE_REF,
    HAL_VREFBUF_MODE_INT_VOLTAGE_REF,
    HAL_VREFBUF_MODE_HOLD
} hal_vrefbuf_mode_t;

Related concepts: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


HAL EXTI constants migration

EXTI lines

The EXTI line constants are removed from the HAL GENERIC driver and replaced with enumerations in the HAL EXTI driver.

HAL1

HAL2



#define EXTI_LINE_0
#define EXTI_LINE_1
#define EXTI_LINE_2
#define EXTI_LINE_3
#define EXTI_LINE_4
#define EXTI_LINE_5
#define EXTI_LINE_6
#define EXTI_LINE_7
#define EXTI_LINE_8
#define EXTI_LINE_9
#define EXTI_LINE_10
#define EXTI_LINE_11
#define EXTI_LINE_12
#define EXTI_LINE_13
#define EXTI_LINE_14
#define EXTI_LINE_15
#define EXTI_LINE_16
#define EXTI_LINE_17
#define EXTI_LINE_18
#define EXTI_LINE_19
#define EXTI_LINE_20
#define EXTI_LINE_21
#define EXTI_LINE_22
#define EXTI_LINE_23
#define EXTI_LINE_24
#define EXTI_LINE_25
          .
          .
          .
typedef enum
 {
 HAL_EXTI_LINE_0,
 HAL_EXTI_LINE_1,
 HAL_EXTI_LINE_2,
 HAL_EXTI_LINE_3,
 HAL_EXTI_LINE_4,
 HAL_EXTI_LINE_5,
 HAL_EXTI_LINE_6,
 HAL_EXTI_LINE_7,
 HAL_EXTI_LINE_8,
 HAL_EXTI_LINE_9,
 HAL_EXTI_LINE_10,
 HAL_EXTI_LINE_11,
 HAL_EXTI_LINE_12,
 HAL_EXTI_LINE_13,
 HAL_EXTI_LINE_14,
 HAL_EXTI_LINE_15,
 HAL_EXTI_LINE_16,
 HAL_EXTI_LINE_17,
 HAL_EXTI_LINE_18,
 HAL_EXTI_LINE_19,
 HAL_EXTI_LINE_20,
 HAL_EXTI_LINE_21,
 HAL_EXTI_LINE_22,
 HAL_EXTI_LINE_23,
 HAL_EXTI_LINE_24,
 HAL_EXTI_LINE_25,
           .
           .
           .
 } hal_exti_line_t;

EXTI mode

The EXTI mode constants are removed from the HAL GENERIC driver and replaced with enumerations in the HAL EXTI driver.

HAL1

HAL2



#define EXTI_MODE_INTERRUPT
#define EXTI_MODE_EVENT
typedef enum
{
 HAL_EXTI_MODE_INTERRUPT,
 HAL_EXTI_MODE_EVENT,
 HAL_EXTI_MODE_INTERRUPT_EVENT
} hal_exti_mode_t;

EXTI trigger

The EXTI trigger constants are removed from the HAL GENERIC driver and replaced with enumerations in the HAL EXTI driver.

HAL1

HAL2



#define EXTI_RISING_EDGE
#define EXTI_FALLING_EDGE
typedef enum
{
 HAL_EXTI_TRIGGER_NONE,
 HAL_EXTI_TRIGGER_RISING,
 HAL_EXTI_TRIGGER_FALLING,
 HAL_EXTI_TRIGGER_RISING_FALLING
} hal_exti_trigger_t;